package gui;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

import model.Livro;
import controller.LivroController;
import javax.swing.JScrollPane;

/**
 * @author argeu
 *
 */
public class Window implements ActionListener{

	private JFrame frmBookApplication;
	private JTextField nmLivro;
	private JPanel cadastroPanel;
	private JTable tabelaListaLivros;
	private JPanel listarPanel;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Window window = new Window();
					window.frmBookApplication.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Window() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frmBookApplication = new JFrame();
		frmBookApplication.setTitle("Book Application");
		frmBookApplication.setBounds(100, 100, 851, 521);
		frmBookApplication.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmBookApplication.getContentPane().setLayout(null);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(0, 0, 837, 21);
		frmBookApplication.getContentPane().add(menuBar);
		
		JMenu mnLivro = new JMenu("Livro");
		menuBar.add(mnLivro);
		
		JMenuItem mntmCadastrarLivro = new JMenuItem("Cadastrar");
		mntmCadastrarLivro.addActionListener(this);
		mntmCadastrarLivro.setActionCommand("mostrarPanelCadastrar");
		mnLivro.add(mntmCadastrarLivro);
		
		JMenuItem mntmListar = new JMenuItem("Listar");
		mnLivro.add(mntmListar);
		mntmListar.addActionListener(this);
		mntmListar.setActionCommand("listarLivros");
		
		listarPanel = new JPanel();
		listarPanel.setBounds(10, 42, 827, 467);
		frmBookApplication.getContentPane().add(listarPanel);
		listarPanel.setLayout(null);
		listarPanel.setVisible(false);
		
		DefaultTableModel model = new DefaultTableModel(new Object[][] {{"1","L1"}},new String[] {"Codigo", "Titulo"});
		tabelaListaLivros = new JTable(model);
		tabelaListaLivros.setAutoscrolls(true);
		tabelaListaLivros.getTableHeader().setBackground(Color.YELLOW);
		tabelaListaLivros.setBounds(12, 57, 803, 357);
		
		JScrollPane scrollPane = new JScrollPane(tabelaListaLivros);
		scrollPane.setBounds(0, 11, 817, 403);
		listarPanel.add(scrollPane);
		
		cadastroPanel = new JPanel();
		cadastroPanel.setBounds(12, 49, 834, 431);
		frmBookApplication.getContentPane().add(cadastroPanel);
		cadastroPanel.setLayout(null);
		cadastroPanel.setVisible(false);
		
		JLabel lblTitulo = new JLabel("Titulo:");
		lblTitulo.setBounds(59, 66, 59, 15);
		cadastroPanel.add(lblTitulo);
		
		nmLivro = new JTextField();
		nmLivro.setBounds(136, 61, 514, 25);
		cadastroPanel.add(nmLivro);
		nmLivro.setColumns(10);
		
		JButton btnCadastrar = new JButton("Cadastrar");
		btnCadastrar.setBounds(329, 325, 117, 25);
		cadastroPanel.add(btnCadastrar);
		btnCadastrar.addActionListener(this);
		btnCadastrar.setActionCommand("cadastrarLivro");
	}

	public void actionPerformed(ActionEvent arg0) {
		if(arg0.getActionCommand().equals("cadastrarLivro")){
			if(nmLivro.getText().trim().length() > 1){
				Livro livro = new Livro();
				livro.setNmLivro(nmLivro.getText());
				boolean retorno = LivroController.inserirLivro(livro);
				if(retorno){
					JOptionPane.showMessageDialog(null, "Livro cadastrado com sucesso.", "Atencao", JOptionPane.ERROR_MESSAGE);
				}else{
					JOptionPane.showMessageDialog(null, "Nao foi possivel salvar o livro, tente novamente.", "Atencao", JOptionPane.ERROR_MESSAGE);
				}
			}else{
				JOptionPane.showMessageDialog(null, "Digite o nome do livro.", "Atencao", JOptionPane.ERROR_MESSAGE);
			}
		} else if(arg0.getActionCommand().equals("mostrarPanelCadastrar")){
			listarPanel.setVisible(false);
			cadastroPanel.setVisible(true);
		} else if (arg0.getActionCommand().equals("listarLivros")){
			//ArrayList<Livro> lista = LivroController.listarLivros();
			
//			for (Livro livro : lista) {
//				model.addRow(new String[] {String.valueOf(livro.getCdLivro()),livro.getNmLivro()});
//			}
			cadastroPanel.setVisible(false);
			listarPanel.setVisible(true);
		}
		
	}
}
